//package com.gzcstec.order.controller;
//
//import com.gzcstec.product.client.ProductClient;
//import com.gzcstec.product.dataobject.DecreaseStockInput;
//import com.gzcstec.product.dataobject.ProductInfoOutput;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.client.RestTemplate;
//
//import java.util.Arrays;
//import java.util.List;
//
///**
// * 服务间调用测试controller
// */
//@RestController
//@RequestMapping("/client")
//@Slf4j
//public class ClientController {
//
//    @Autowired
//    private ProductClient productClient;
//
////    @Autowired
////    private LoadBalancerClient loadBalancerClient;
//
//    @Autowired
//    private RestTemplate restTemplate;
//
//    @GetMapping("/msg")
//    public String getMsg() {
//        /**
//         * 第一种方式：使用restTemplate，url写死
//         */
////        RestTemplate restTemplate = new RestTemplate();
////        String msg = restTemplate.getForObject("http://localhost:8080/server/msg" , String.class);
//
//        /**
//         * 第二种方式：使用@LoadBalancerClient动态获取服务域名和端口
//         */
////        RestTemplate restTemplate = new RestTemplate();
////        ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
////        String url = String.format("http://%s:%s" , serviceInstance.getHost() , serviceInstance.getPort()) + "/server/msg";
////        String msg = restTemplate.getForObject(url , String.class);
//
//        /**
//         * 第三种方式：使用@LoadBalanced通过服务名进行调用
//         */
//        String msg = restTemplate.getForObject("http://PRODUCT/server/msg" , String.class);
//        log.info(msg);
//        return msg;
//    }
//
//    @GetMapping("/feign/msg")
//    public List<ProductInfoOutput> getMsgByFeign() {
//        return productClient.list(Arrays.asList("001" , "002"));
//    }
//
//    @GetMapping("/feign/product/decreaseStock")
//    public String decreaseStock() {
//        productClient.decreaseStock(Arrays.asList(new DecreaseStockInput("003" , 10)));
//        return "ok";
//    }
//}
